5.10 Mise en pratique : arbre binaire

Exercice 1
Raliser un gnrateur d'arbres binaires DYNAMIQUES contenant des donnes alatoires. Gnrer un arbre. Parcourir l'arbre en profondeur (trois parcours  tester). Parcourir l'arbre en largeur.  chaque fois, afficher l'arbre. Obtenir toutes les proprits de l'arbre (taille, hau-teur, nombre de feuilles, lister les feuilles, somme des nuds de l'arbre). Ramener tel ou tel nud selon une valeur donne. Sauver l'arbre. Dtruire l'arbre. Charger l'arbre.

Exercice 2
Raliser un gnrateur d'arbres binaires STATIQUES contenant des donnes alatoires. Gn-rer un arbre. Parcourir l'arbre en profondeur (trois parcours  tester). Parcourir l'arbre en largeur.  chaque fois, afficher l'arbre. 
Obtenir toutes les proprits de l'arbre (taille, hauteur, nombre de feuilles, lister les feuilles, somme des nuds de l'arbre). Ramener tel ou tel nud selon une valeur donne. Sauver l'arbre. Dtruire l'arbre. Charger l'arbre.

Exercice 3
Raliser un gnrateur d'arbres binaires SUR FICHIER contenant des donnes ala-toires. Gnrer un arbre. Parcourir l'arbre en profondeur (trois parcours  tester). Parcourir l'arbre en largeur.  chaque fois, afficher l'arbre. Obtenir toutes les proprits de l'arbre (taille, hauteur, nombre de feuilles, lister les feuilles, somme des nuds de l'arbre). Ramener tel ou tel nud selon une valeur donne. Sauver l'arbre. Dtruire l'arbre. Charger l'arbre.

Exercice 4
Reprsenter l'arbre gnalogique d'une famille de son choix ou de son invention. Les informations peuvent tre fournies par un fichier texte du style :
Sonia : Paul, Catherine, Benoit ;
Paul : Isabelle, Armand ;
Catherine : Anatole, Elose, Brigitte ;
etc.

Exercice 5
Une expression arithmtique comme (14 * 5)  (7 / 10) peut prendre la forme d'un arbre. Dans un programme :
 Construire un arbre  partir d'une expression arithmtique.
 crire une fonction d'valuation de l'expression arithmtique  partir d'un arbre et donner son rsultat.
 crire une fonction qui affiche la traduction en expression postfixe.
Une expression postfixe (notation polonaise inverse) est du type :  
5  17  6  4 * 2 + * 
les parenthses implicites sont : 
( 5 ( ( ( 17  6   )  4 * )  2 + ) * ) 
ce qui quivaut, en notation classique infixe,  : 
( ( ( 17  6 ) * 4 ) + 2 ) * 5
 crire une fonction pour construire un arbre  partir d'une expression postfixe donne.
 crire une fonction qui construit un arbre  partir d'une expression arithmtique infixe classique (avec parenthses).

Exercice 6
Soit la description suivante :
Homme : tte, cou, tronc, bras, jambes ;
tte : crne, yeux, oreilles, cheveux, bouche ;
tronc : abdomen, thorax ;
thorax : cur, foie, poumons ;
jambe : cuisse, mollet, pied ;
pied : cou de pied, orteils, talon ;
bras : paule, avant-bras, main ;
main : doigts ;
Dans un programme, faire l'arbre n-aire, puis l'arbre binaire correspondant.
Sur le modle de cette description, faire l'arbre des composants d'une voiture. Toujours sur ce modle analyser un sujet ou un objet de son choix et reprsenter l'arbre correspondant dans un programme.

Exercice 7
Simuler la gestion d'un tournoi de tennis sous la forme d'un arbre binaire. Les informations de chaque match sont conserves.  l'issue du tournoi, le match de finale se trouve  la racine de l'arbre.

Exercice 8
Soit la description suivante :
Terre : Europe, Asie, Afrique, Amrique, Ocanie ;
Europe : France, Espagne, Italie, Allemagne, Belgique ;
Asie : Chine, Inde, Japon ;
Afrique : Burkina, Cte d'Ivoire ;
Dans un programme, faire l'arbre n-aire, puis l'arbre binaire correspondant.
Sur ce modle faire, par exemple, la carte de vos lieux favoris.

Exercice 9
Objectifs : parcourir et ajouter dans un arbre binaire
La reprsentation d'un domaine dont les concepts sont hirarchiss sous forme d'arbre binaire peut s'appliquer aussi bien  des tches de classification/identification (d'animaux, de vgtaux, de minraux...) qu' des tches de diagnostic (diagnostic mdical, dtection de panne...).
Par exemple :
 
Dans cet exemple, l'ordinateur pose des questions pour essayer de dcouvrir un animal auquel vous pensez. Vous ne pouvez rpondre que par OUI ou NON. S'il choue, il vous demande de lui fournir une question qui caractrise l'animal qu'il n'a pas trouv, ce qui permet de raliser une certaine forme d'apprentissage. Trouver un animal consiste  parcourir un arbre binaire dont les nuds internes sont des questions et les feuilles des animaux. La phase dapprentissage consiste, si lutilisateur le souhaite,  ajouter lanimal non trouv dans larbre (voir trace dexcution en page suivante).
Afin de garder une trace de cet arbre binaire, celui-ci est sauvegard dans un fichier.
Deux approches sont possibles : sur fichier en accs direct ou en dynamique en mmoire cen-trale. Pour commencer, faites plutt un arbre dynamique (mais vous pouvez opter pour un arbre sur fichier si vous prfrez). La sauvegarde sur fichier d'un arbre dynamique pourra tre ralise grce  un parcours en largeur de l'arbre.
 faire :
Dfinir en C la structure de donnes pour un nud de larbre.
  quelle(s) condition(s) sait-on diffrencier un nud interne dune feuille ?
 Quel est lordre de parcours (infix, prfix ou postfix) de larbre affich dans la trace dexcution de la page suivante ? Justifier. Donner les 2 autres ordres de parcours.
 crire, commenter et tester les fonctions suivantes en respectant la trace dexcution de la page suivante :
 Affichage d'un arbre de jeu.
 Parcours d'un arbre de jeu en posant les questions  l'utilisateur.
 Apprentissage d'un nouvel animal par ajout d'une question et d'une rponse.
 Toute autre fonction juge ncessaire.
 Envisager la sauvegarde et le chargement de l'arbre dans le programme.
Pour la trace d'excution, on a utilis les caractres normaux pour ce qui est affich  l'cran par le programme, les commentaires sont en italique et les rponses tapes par l'utilisateur en caractres soulign.
